"""
@Time: 2024/3/15 13:30
@Auther: hwx
@Desc: 10-数据容器（序列）的切片

序列是指：内容连续、有序，可使用下标索引的一类数据容器。列表、元组、字符串，均可以可以视为序列。

序列支持切片，即：列表、元组、字符串，均支持进行切片操作切片：从一个序列中，取出一个子序列

语法：序列［起始下标：结束下标：步长］

表示从序列中，从指定位置开始，依次取出元素，到指定位置结束，得到一个新序列：
 · 起始下标表示从何处开始，可以留空，留空视作从头开始
． 结束下标（不含）表示何处结束，可以留空，留空视作截取到结尾
 · 步长表示，依次取元素的间隔
 · 步长1表示，一个个取元素
 · 步长2表示，每次跳过1个元素取
 · 步长N表示，每次跳过N-1个元素取
 · 步长为负数表示，反向取（注意，起始下标和结束下标也要反向極宛永云烟

注意，此操作不会影响序列本身，而是会得到一个新的序列（列表、元组或字符串），这是因为元组和字符串是不支持修改的。

"""

# 对list进行切片，从1开始，4结束，步长1
my_list = [0, 1, 2, 3, 4, 5, 6]
result1 = my_list[1:4]
# 步长默认是1，所以可以省略不写
print(f"结果1：{result1}")

# 对tuple进行切片，从头开始，到最后结束，步长1
my_tuple = (0, 1, 2, 3, 4, 5, 6)
result2 = my_tuple[:]  # 起始和结束不写表示从头到尾，步长为1可以省略
print(f"结果2：{result2}")

# 对str下进行切片，从头开始，到最后结束，步长2
my_str = "01234567"
result3 = my_str[::2]
print(f"结果3：{result3}")

# 对str进行切片，从头开始，到最后结束，步长-1
my_str = "01234567"
result4 = my_str[::-1]  # 等同于将序列反转了
print(f"结果4：{result4}")

# 对列表进行切片，从3开始，到1结束，步长-1
my_1ist = [0, 1, 2, 3, 4, 5, 6]
result5 = my_list[3:1:-1]
print(f"结果5：{result5}")

# 对元组进行切片，从头开始，到尾结束，步长-2
my_tuple = (0, 1, 2, 3, 4, 5, 6)
result6 = my_tuple[::-2]
print(f"结果6：{result6}")
